# -*- coding: utf-8 -*-            
# @Time : 2023/2/12 17:31
# @Author  : lining
# @FileName: 排列.py
"""
https://leetcode.cn/problems/permutations/
给定一个不含重复数字的数组 nums ，返回其 所有可能的全排列
输入：nums = [1,2,3]
输出：[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
思路：从列表里选一个数，放进第一个位置，再选一个数放第二个位置，一直到选完为止
"""
result = []
used = [False, False, False,False]
# 要排列的列表
x = [1,2,3,4]
def pailie(data, params):
    """
    :param data: 当前已经选好的列表
    :param params: 原列表
    :return:
    """
    # 已经获取完所有数，存放结果
    if len(data) == 4:
        result.append(data[:])
        return
    for i in range(0,len(params)):
        print(i)
        if used[i] is True:
            continue
        used[i]=True
        print('APPEND后的used'+str(used))
        data.append(params[i])
        pailie(data, params)
        print('pop的i'+str(i))
        data.pop()
        used[i] = False
        print('pop后的used' + str(used))


pailie([],x)
print(result)

